{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "Bearing_design.ipynb",
      "provenance": [],
      "mount_file_id": "1ECglH6UFbQvqZbmW2gXmMPmaVa2hapaY",
      "authorship_tag": "ABX9TyO22tTxJ727lY0KG5Q5QTnu",
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/vijaikrish/Journal-Bearing-Design/blob/main/Bearing_design.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "SfATcY7PYrgn"
      },
      "source": [
        "import numpy as np\n",
        "from tkinter import *\n",
        "import cmath\n",
        "from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg\n",
        "from tkinter import ttk\n",
        "from matplotlib.figure import Figure\n",
        "import matplotlib.pyplot as plt\n",
        "import math\n",
        "from numpy import arange\n",
        "from pandas import read_csv\n",
        "from scipy.optimize import curve_fit\n",
        "from matplotlib import pyplot\n"
      ],
      "execution_count": 2,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "sHYB6-VyVU47"
      },
      "source": [
        "LD0_25 = np.genfromtxt('drive/MyDrive/Bearing design/LDratio0_25.csv', delimiter=',')\n",
        "LD0_5 = np.genfromtxt('drive/MyDrive/Bearing design/LDratio0_5.csv', delimiter=',')\n",
        "LD1 = np.genfromtxt('drive/MyDrive/Bearing design/LDratio1.csv', delimiter=',')\n"
      ],
      "execution_count": 3,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "kwmC-7RaVXd6"
      },
      "source": [
        "eccentricity = 1\n",
        "sommerfeld = 1\n",
        "attitude_angle = 2\n",
        "friction = 3\n",
        "flow = 4\n",
        "torque = 5\n"
      ],
      "execution_count": 4,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "84Aon9wvWXau",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "outputId": "4d6e5b41-d1ce-48cb-8c7f-302c108ada1c"
      },
      "source": [
        "# This optimisation is performed for the fixed radius and the fixed axial value\n",
        "# The clearance is the only value used for the optimisation\n",
        "# Given data\n",
        "# Bearing axial length = L\n",
        "# Bearing shaft radius = R\n",
        "# rotor weight = W\n",
        "# Shaft speed = RPM\n",
        "# Groove width = wg\n",
        "# groove length = Lg\n",
        "\n",
        "\n",
        "# If the center of gravity is at the center of the rotor 0.5 is used. So the weight of the rotor is equally balanced\n",
        "CG_left = 0.5\n",
        "rotor_weight = 1000       #Kg\n",
        "CG_right = 1 - CG_left\n",
        "bearing_load_left = rotor_weight * CG_left \n",
        "bearing_load_right = rotor_weight * CG_right\n",
        "rpm = 5500               #RPM\n",
        "shaft_diameter = 190     #mm\n",
        "\n",
        "L = 42\n",
        "D = shaft_diameter\n",
        "\n",
        "LD_Ratio = L/D \n",
        "\n",
        "print(LD_Ratio)\n",
        "# From the map check for the L/D ratio curve and enter the values of min friction and max load sommerfeld number"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "0.22105263157894736\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "APVtpFmzrlXj"
      },
      "source": [
        "![bearing chart.JPG]()"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "hsmRtF6DJnAm",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 129
        },
        "outputId": "b3bac43b-2d17-48b5-ff84-90043fa27892"
      },
      "source": [
        "## Clearence range calculation\n",
        "\n",
        "min_f_som = \n",
        "max_w_som = "
      ],
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "error",
          "ename": "SyntaxError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;36m  File \u001b[0;32m\"<ipython-input-6-a264d5aeede6>\"\u001b[0;36m, line \u001b[0;32m3\u001b[0m\n\u001b[0;31m    min_f_som =\u001b[0m\n\u001b[0m                ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "H_qJ6a33Tp3g",
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "cellView": "code",
        "outputId": "1cfd6b74-c50e-4e0b-ab62-e3d1e16f07d5"
      },
      "source": [
        "#Lubricatant properties calculation\n",
        "\n",
        "#Lubricant properties ISO VG 32\n",
        "\n",
        "#Density at 15°C   873 kg/m³\n",
        "#Kinematic viscosity at 40°C   32.02 mm²/s\n",
        "#Kinematic viscosity at 100°C   5.4 mm²/s\n",
        "#Specific gravity = 9.340398 * 10^6 kg/m³\n",
        "\n",
        "#Lubricant properties ISO VG 46\n",
        "\n",
        "#Density at 20°C\t855.1 kg/m³\n",
        "#Viscosity, kinematic at 40°C\t   47.4  mm²/s\n",
        "#Viscosity, kinematic at 100°C  \t9.5  mm²/s\n",
        "#specific gravity = 9.328874 * 10^6 kg/m³\n",
        "\n",
        "\n",
        "lub = input (\"Select the oil type: A) ISO VG 32  B) ISO VG 46(HSB). [A/B]? : \")\n",
        "if lub == \"A\":\n",
        "    density = 873\n",
        "    ref_temp_density = 15\n",
        "    kinematic_viscosity_40deg = 32.02 \n",
        "    kinematic_viscosity_100deg = 5.3 \n",
        "    specific_gravity = 0.873996294\n",
        "    ref_temp_specific_gravity_f = 60\n",
        "else:\n",
        "    density = 855.1\n",
        "    ref_temp_density = 20\n",
        "    kinematic_viscosity_40deg = 46\n",
        "    kinematic_viscosity_100deg = 6.5 \n",
        "    specific_gravity = 0.872917952\n",
        "    ref_temp_specific_gravity_f = 60\n",
        "\n",
        "#print(density)\n",
        "#print(ref_temp_density)\n",
        "#print(kinematic_viscosity_40deg)\n",
        "#print(kinematic_viscosity_100deg)\n",
        "#print(specific_gravity)"
      ],
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Select the oil type: A) ISO VG 32  B) ISO VG 46(HSB). [A/B]? : B\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "M1CIJ9TUyv3z"
      },
      "source": [
        "# Dynamic Viscosity calculation\n",
        "\n",
        "def viscocity_calculation (specific_gravity, density, ref_temp_specific_gravity_f, kinematic_viscosity_40deg, kinematic_viscosity_100deg, calculation_temp):\n",
        "  #Temperature coversion \n",
        "  calculation_temp_f = (calculation_temp * (9/5)) +32\n",
        "  calculation_temp_f = (calculation_temp * (9/5)) +32\n",
        "  calculation_temp_f = (calculation_temp * (9/5)) +32\n",
        "  #Calculation of the specific gravity for the required temperature\n",
        "  specific_gravity_temp = specific_gravity * (1 - (0.000421 * (calculation_temp_f - ref_temp_specific_gravity_f))) # lbf s2/in4\n",
        "\n",
        "  #Calculation of desity for the required temperature \n",
        "  density_temp = specific_gravity_temp*8.3369/231*12**3   #lb/ft3\n",
        "\n",
        "  #Calculation of kinematic viscocity for the required temperature \n",
        "  k1 = np.log(kinematic_viscosity_100deg/kinematic_viscosity_40deg)\n",
        "  k2 = ((calculation_temp_f-104)/(212-104))\n",
        "  kinematic_viscosity_temp = kinematic_viscosity_40deg * np.exp( k1 * k2) #cst or mm2/s\n",
        "  # print (kinematic_viscosity_temp)\n",
        "\n",
        "  #Calculation of the dynamic viscocity for the required temperature\n",
        "  dynamic_viscosity = kinematic_viscosity_temp * density_temp*16.01846*10**-6 # pa s or Ns/m2\n",
        "\n",
        "  return dynamic_viscosity, kinematic_viscosity_temp, density_temp\n",
        "\n",
        "properties =[]\n",
        "calculation_temp = []\n",
        "#calculation_temp = 16\n",
        "for i in range (0,30,1):\n",
        "  if i == 0:\n",
        "    calculation_temp.append(16)\n",
        "  else:\n",
        "    gen = calculation_temp[i-1] +5\n",
        "    calculation_temp.append(gen)\n",
        "\n",
        "  properties.append(viscocity_calculation(specific_gravity, density, ref_temp_specific_gravity_f, kinematic_viscosity_40deg, kinematic_viscosity_100deg, calculation_temp[i]))\n",
        "\n",
        "type(properties)\n",
        "print(properties)\n",
        "print(calculation_temp)\n",
        "\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Iwk8P4O0Hcbh"
      },
      "source": [
        "#Converting list to array for the easy data processing with the array type \n",
        "\n",
        "prop_arr = np.array(properties)\n",
        "dynamic_viscosity_arr = prop_arr[:,0]\n",
        "kinematic_viscosity_arr = prop_arr[:,1]\n",
        "density_arr = prop_arr[:,2]\n",
        "#print(dynamic_viscosity_arr, kinematic_viscosity_arr, density_arr)\n",
        "\n",
        "#Converting back to the list type for the calculation\n",
        "#Python takes array as the string type, it gets difficult and confusing. It is always better to transfer them back to list to perform curve-fit calculation and other list based python library tools.\n",
        "\n",
        "dynamic_viscosity_list = dynamic_viscosity_arr.tolist()\n",
        "kinematic_viscosity_list = kinematic_viscosity_arr.tolist()\n",
        "density_list = density_arr.tolist()\n",
        "#print(dynamic_viscosity_list, kinematic_viscosity_list, density_list)\n"
      ],
      "execution_count": 9,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "8mJz2a0zy4ti",
        "outputId": "d56b7770-460b-4359-cd1f-b5e803ed3aa8"
      },
      "source": [
        "# Plotting dynamic viscocity with respect to the temperature\n",
        "# using curve-fit algorithm\n",
        "# define the true objective function\n",
        "def objective(x, a, b, c, d,e):\n",
        "\treturn a * x + b * x**2 + c * x**3 +d*x**4 +e\n",
        " \n",
        "# choose the input and output variables\n",
        "x, y = calculation_temp, dynamic_viscosity_list\n",
        "# curve fit\n",
        "popt, _ = curve_fit(objective, x, y)\n",
        "# summarize the parameter values\n",
        "a, b, c, d, e = popt\n",
        "print('y = %.5f * x + %.5f * x^2 + %.5f * x^3 +%.5f * x^4 + %.5f' % (a, b, c, d,e))\n",
        "# plot input vs output\n",
        "pyplot.scatter(x, y)\n",
        "# define a sequence of inputs between the smallest and largest known inputs\n",
        "x_line = arange(min(x), max(x), 1)\n",
        "# calculate the output for the range\n",
        "y_line = objective(x_line, a, b, c, d,e)\n",
        "# create a line plot for the mapping function\n",
        "pyplot.plot(x_line, y_line, '--', color='red')\n",
        "pyplot.show()\n",
        "\n"
      ],
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "y = -0.00402 * x + 0.00005 * x^2 + -0.00000 * x^3 +0.00000 * x^4 + 0.14035\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "PNltu4r0JKRm",
        "outputId": "c00e0edb-0f77-4b01-e3c1-6c7ce81c3ca4"
      },
      "source": [
        "# Plotting kinematic viscocity with respect to the temperature\n",
        "# using curve-fit algorithm\n",
        " \n",
        " \n",
        "# choose the input and output variables\n",
        "x, y = calculation_temp, kinematic_viscosity_list\n",
        "# curve fit\n",
        "popt, _ = curve_fit(objective, x, y)\n",
        "# summarize the parameter values\n",
        "a, b, c, d, e = popt\n",
        "print('y = %.5f * x + %.5f * x^2 + %.5f * x^3 +%.5f * x^4 + %.5f' % (a, b, c, d,e))\n",
        "# plot input vs output\n",
        "pyplot.scatter(x, y)\n",
        "# define a sequence of inputs between the smallest and largest known inputs\n",
        "x_line = arange(min(x), max(x), 1)\n",
        "# calculate the output for the range\n",
        "y_line = objective(x_line, a, b, c, d,e)\n",
        "# create a line plot for the mapping function\n",
        "pyplot.plot(x_line, y_line, '--', color='red')\n",
        "pyplot.show()"
      ],
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "y = -4.50660 * x + 0.05205 * x^2 + -0.00028 * x^3 +0.00000 * x^4 + 159.74564\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "id": "d9iKXpsuJTt8",
        "outputId": "deb3e95d-5e51-4c62-e4fc-17e915716786"
      },
      "source": [
        "# Plotting desity with respect to the temperature\n",
        "# using curve-fit algorithm\n",
        " \n",
        "# choose the input and output variables\n",
        "x, y = calculation_temp, density_list\n",
        "# curve fit\n",
        "popt, _ = curve_fit(objective, x, y)\n",
        "# summarize the parameter values\n",
        "a, b, c, d, e = popt\n",
        "print('y = %.5f * x + %.5f * x^2 + %.5f * x^3 +%.5f * x^4 + %.5f' % (a, b, c, d,e))\n",
        "# plot input vs output\n",
        "pyplot.scatter(x, y)\n",
        "# define a sequence of inputs between the smallest and largest known inputs\n",
        "x_line = arange(min(x), max(x), 1)\n",
        "# calculate the output for the range\n",
        "y_line = objective(x_line, a, b, c, d,e)\n",
        "# create a line plot for the mapping function\n",
        "pyplot.plot(x_line, y_line, '--', color='red')\n",
        "pyplot.show()"
      ],
      "execution_count": 12,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "y = -0.04125 * x + 0.00000 * x^2 + -0.00000 * x^3 +0.00000 * x^4 + 55.08068\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "-eaCRajKhrbk"
      },
      "source": [
        "## Friction force \n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xX8SUXOjh8V9"
      },
      "source": [
        "## Minimum film thickness \n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_fVsp8B4jr-0"
      },
      "source": [
        "![minimum film thickness.JPG]()"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "jZD3bS_qcBRu"
      },
      "source": [
        "## oil leakage calculation\n",
        "\n",
        "c1 = 0.73 * (L/D)**(-0.035)\n",
        "c2 = 0.73 * (L/D)**(0.66)\n",
        "c3 = 0.444 * ((L/D)**0.35) * ((wg/D)**1.2) * (1+ (1.11*epi))\n",
        "\n",
        "fl = (epi * f1 * f2)/f3 \n",
        "f2 = 0.25 + (c1 * (1-epi)**c2)\n",
        "f3 = 10**c3\n",
        "\n",
        "fg = ((1.25 - (0.25*(lg/L))) / (3 * ((L/Lg)-1)**(1/3))) + (wg/D) / (3*(L/D)*(1-(Lg/L)))\n",
        "(hg/D)**3 = (1 + (epi*np.cos(pi))**3) + (1 - (epi*np.sin(pi))**3)\n",
        "\n",
        "# Oil Axial flow due to rotation\n",
        "Lg/L = 0.3\n",
        "m = 0.27 * (Ql / Qp)**0.27\n",
        "Ql_total = Qm * (Lg / L)**m\n",
        "\n",
        "# Pressure induced oil flow\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "# Total pressure\n",
        "\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "K2qs8QNXh_9b"
      },
      "source": [
        "## Power calculation \n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "VkDh2FEEiW9L"
      },
      "source": [
        "## Attitude angle calculation\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "QVEanA6jjNrC"
      },
      "source": [
        "![oil instability.JPG]()"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 554
        },
        "id": "ycM2JNaVjRi4",
        "outputId": "c7cfff6e-582a-4c1e-b5b2-b6aa59ffed54"
      },
      "source": [
        "# fit a second degree polynomial to the economic data\n",
        "from numpy import arange\n",
        "from pandas import read_csv\n",
        "from scipy.optimize import curve_fit\n",
        "from matplotlib import pyplot\n",
        " \n",
        "# define the true objective function\n",
        "def objective(x, a, b, c):\n",
        "\treturn a * x + b * x**2 + c\n",
        " \n",
        "# load the dataset\n",
        "url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/longley.csv'\n",
        "dataframe = read_csv(url, header=None)\n",
        "data = dataframe.values\n",
        "print(data)\n",
        "# choose the input and output variables\n",
        "x, y = data[:, 4], data[:, -1]\n",
        "# curve fit\n",
        "popt, _ = curve_fit(objective, x, y)\n",
        "# summarize the parameter values\n",
        "a, b, c = popt\n",
        "print('y = %.5f * x + %.5f * x^2 + %.5f' % (a, b, c))\n",
        "# plot input vs output\n",
        "pyplot.scatter(x, y)\n",
        "# define a sequence of inputs between the smallest and largest known inputs\n",
        "x_line = arange(min(x), max(x), 1)\n",
        "# calculate the output for the range\n",
        "y_line = objective(x_line, a, b, c)\n",
        "# create a line plot for the mapping function\n",
        "pyplot.plot(x_line, y_line, '--', color='red')\n",
        "pyplot.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "[[  83.     234.289  235.6    159.     107.608 1947.      60.323]\n",
            " [  88.5    259.426  232.5    145.6    108.632 1948.      61.122]\n",
            " [  88.2    258.054  368.2    161.6    109.773 1949.      60.171]\n",
            " [  89.5    284.599  335.1    165.     110.929 1950.      61.187]\n",
            " [  96.2    328.975  209.9    309.9    112.075 1951.      63.221]\n",
            " [  98.1    346.999  193.2    359.4    113.27  1952.      63.639]\n",
            " [  99.     365.385  187.     354.7    115.094 1953.      64.989]\n",
            " [ 100.     363.112  357.8    335.     116.219 1954.      63.761]\n",
            " [ 101.2    397.469  290.4    304.8    117.388 1955.      66.019]\n",
            " [ 104.6    419.18   282.2    285.7    118.734 1956.      67.857]\n",
            " [ 108.4    442.769  293.6    279.8    120.445 1957.      68.169]\n",
            " [ 110.8    444.546  468.1    263.7    121.95  1958.      66.513]\n",
            " [ 112.6    482.704  381.3    255.2    123.366 1959.      68.655]\n",
            " [ 114.2    502.601  393.1    251.4    125.368 1960.      69.564]\n",
            " [ 115.7    518.173  480.6    257.2    127.852 1961.      69.331]\n",
            " [ 116.9    554.894  400.7    282.7    130.081 1962.      70.551]]\n",
            "y = 3.25443 * x + -0.01170 * x^2 + -155.02783\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    }
  ]
}